package com.cao.meet.util;

import android.annotation.SuppressLint;
import android.app.ZysjSystemManager;
import android.content.Context;

import com.blankj.utilcode.util.LogUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by ZKTH
 * Time ： 2018/12/25.14:21
 * data ： 向文件中不断追加读写数据
 */

public class AppendFileWrite {

    private static AppendFileWrite appendFileWrite;

    private AppendFileWrite() {
    }

    //单例创建当前类的实例
    public static AppendFileWrite getAppendFileWrite() {
        if (appendFileWrite == null) {
            getFileWrite();
        }
        return appendFileWrite;
    }

    //加同步锁
    private static synchronized void getFileWrite() {
        if (appendFileWrite == null) {
            appendFileWrite = new AppendFileWrite();
        }
    }

    /**
     * 向文件内写入数据
     * @param fileName 文件路径及名称
     * @param content 向文件中写入的内容
     */
    public void writeToFile(String fileName, String content, Context context) {

        @SuppressLint("WrongConstant")
        ZysjSystemManager manager = (ZysjSystemManager) context.getSystemService("zysj");
        //获取以太网ip地址
        String ip_address = manager.ZYgetEthIp();

        FileWriter writer = null;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date(System.currentTimeMillis());
        String now_time = dateFormat.format(date);
        try {
            File file = new File(fileName);
            if (!file.exists()) {
                file.createNewFile();
            }
            // 打开一个写文件器，构造函数中的第二个参数true表示以追加形式写文件
            writer = new FileWriter(fileName, true);
            writer.write(now_time + "  " + ip_address + "  " + "TH-NA6500  " + content + "\r\n");
        } catch (IOException e) {
            e.printStackTrace();
            LogUtils.e(e.toString());
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
                LogUtils.e(e.toString());
            }
        }
    }

    /**
     * 读取文件内的信息
     * @param fileName 本次存储的文件名称
     * @return 返回文件内的信息
     */
    public String readFromFile(String fileName) {
        try {
            File file = new File(fileName);//获取文件
            if (null != file) {
                int length = (int) file.length();//获取文件长度
                byte[] bytes = new byte[length];//根据文件长度定义字节数组
                FileInputStream inputStream = new FileInputStream(file);//将文件转换为输入流
                if (inputStream != null){
                    inputStream.read(bytes);//读取文件内的信息
                    inputStream.close();//关闭输入流
                    String result = new String(bytes, "UTF-8");//将读取到的信息转换为String类型
                    LogUtils.e(result);
                    return result;//返回获取到的数据
                }
            }
        }catch (IOException e){
            e.printStackTrace();
            LogUtils.e(e.toString());
        }
        return null;
    }

}
